// TeamXOR ALU
// Control Signals:
// 000 - Multiply A7...A0 by B7...B0
// 001 - Pass A15...A0
// 010 - AND A15...A0 with B15...B0
// 011 - OR A15...A0 with B15...B0
// 100 - Add A15...A0 to B15...B0
// 101 - Subtract A15...A0 by B15...B0
// 110 - Shift A15...A0 by: 1 when B1B0=00, by 2 when B1B0=01, by 3 when B1B0=10, by 4 when B1B0=11
// 111 - No Operation.  Output of ALU remains the same

subckt TeamXORALU VDD VSS A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 \
S2 S1 S0 Out15 Out14 Out13 Out12 Out11 Out10 Out9 Out8 Out7 Out6 Out5 Out4 Out3 Out2 Out1 Out0 CarryOut


/////////////////////////////////////////////////////////////////////////////////
//Arbitrary Function - Control Line = 000 - Set it to Ground for Testing
/////////////////////////////////////////////////////////////////////////////////

VAF15 (Line0b15 0) vsource type=dc dc=0
VAF14 (Line0b14 0) vsource type=dc dc=0
VAF13 (Line0b13 0) vsource type=dc dc=0
VAF12 (Line0b12 0) vsource type=dc dc=0
VAF11 (Line0b11 0) vsource type=dc dc=0
VAF10 (Line0b10 0) vsource type=dc dc=0
VAF9 (Line0b9 0) vsource type=dc dc=0
VAF8 (Line0b8 0) vsource type=dc dc=0
VAF7 (Line0b7 0) vsource type=dc dc=0
VAF6 (Line0b6 0) vsource type=dc dc=0
VAF5 (Line0b5 0) vsource type=dc dc=0
VAF4 (Line0b4 0) vsource type=dc dc=0
VAF3 (Line0b3 0) vsource type=dc dc=0
VAF2 (Line0b2 0) vsource type=dc dc=0
VAF1 (Line0b1 0) vsource type=dc dc=0
VAF0 (Line0b0 0) vsource type=dc dc=0

/////////////////////////////////////////////////////////////////////////////////
//Pass A - Control Line = 001
/////////////////////////////////////////////////////////////////////////////////

PASSA16b (VDD VSS A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Line1b15 Line1b14 \
		Line1b13 Line1b12 Line1b11 Line1b10 Line1b9 Line1b8 Line1b7 Line1b6 Line1b5 \
		Line1b4 Line1b3 Line1b2 Line1b1 Line1b0) TeamXOR16bPass

/////////////////////////////////////////////////////////////////////////////////
//AND - Control Line = 010
/////////////////////////////////////////////////////////////////////////////////

AND16b (VDD VSS A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 \
	B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 Line2b15 Line2b14 Line2b13 \
	Line2b12 Line2b11 Line2b10 Line2b9 Line2b8 Line2b7 Line2b6 \
	Line2b5 Line2b4 Line2b3 Line2b2 Line2b1 Line2b0) TeamXOR16b2inAND

/////////////////////////////////////////////////////////////////////////////////
//OR - Control Line = 011
/////////////////////////////////////////////////////////////////////////////////

OR16b (VDD VSS A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 \
	 Line3b15 Line3b14 Line3b13 Line3b12 Line3b11 Line3b10 Line3b9 Line3b8 Line3b7 Line3b6 Line3b5 Line3b4 Line3b3 \
	 Line3b2 Line3b1 Line3b0) TeamXOR16b2inOR

/////////////////////////////////////////////////////////////////////////////////
//Add/Subtract - Control Line = 100/101
/////////////////////////////////////////////////////////////////////////////////

ADDSUB16b (VDD VSS A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 Subtract \
	Line45b15 Line45b14 Line45b13 Line45b12 Line45b11 Line45b10 Line45b9 Line45b8 Line45b7 Line45b6 Line45b5 Line45b4 Line45b3 Line45b2 Line45b1 Line45b0 CarryOut) TeamXOR16BitAdderSubtractor

/////////////////////////////////////////////////////////////////////////////////
//Shift - Control Line = 110
/////////////////////////////////////////////////////////////////////////////////

Shift16b (VDD VSS B1 B0 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Line6b15 Line6b14 Line6b13 \
	Line6b12 Line6b11 Line6b10 Line6b9 Line6b8 Line6b7 Line6b6 Line6b5 Line6b4 Line6b3 Line6b2 Line6b1 Line6b0) TeamXOR16bShifter

/////////////////////////////////////////////////////////////////////////////////
//NOP - Control Line = 111
/////////////////////////////////////////////////////////////////////////////////

NOP16b (VDD VSS Out15 Out14 Out13 Out12 Out11 Out10 Out9 Out8 Out7 Out6 Out5 Out4 Out3 Out2 Out1 Out0 Line7b15 Line7b14 \
		Line7b13 Line7b12 Line7b11 Line7b10 Line7b9 Line7b8 Line7b7 Line7b6 Line7b5 \
		Line7b4 Line7b3 Line7b2 Line7b1 Line7b0) TeamXOR16bPass
		
/////////////////////////////////////////////////////////////////////////////////
//8 to 1 MUX Connecting All Functions - 16 Bits
/////////////////////////////////////////////////////////////////////////////////

8to1MUXb15 (VDD VSS Line0b15 Line1b15 Line2b15 Line3b15 Line45b15 Line45b15 Line6b15 Line7b15 S0 S1 S2 Out15) TeamXOR8to1MUX
8to1MUXb14 (VDD VSS Line0b14 Line1b14 Line2b14 Line3b14 Line45b14 Line45b14 Line6b14 Line7b14 S0 S1 S2 Out14) TeamXOR8to1MUX
8to1MUXb13 (VDD VSS Line0b13 Line1b13 Line2b13 Line3b13 Line45b13 Line45b13 Line6b13 Line7b13 S0 S1 S2 Out13) TeamXOR8to1MUX
8to1MUXb12 (VDD VSS Line0b12 Line1b12 Line2b12 Line3b12 Line45b12 Line45b12 Line6b12 Line7b12 S0 S1 S2 Out12) TeamXOR8to1MUX
8to1MUXb11 (VDD VSS Line0b11 Line1b11 Line2b11 Line3b11 Line45b11 Line45b11 Line6b11 Line7b11 S0 S1 S2 Out11) TeamXOR8to1MUX
8to1MUXb10 (VDD VSS Line0b10 Line1b10 Line2b10 Line3b10 Line45b10 Line45b10 Line6b10 Line7b10 S0 S1 S2 Out10) TeamXOR8to1MUX
8to1MUXb9 (VDD VSS Line0b9 Line1b9 Line2b9 Line3b9 Line45b9 Line45b9 Line6b9 Line7b9 S0 S1 S2 Out9) TeamXOR8to1MUX
8to1MUXb8 (VDD VSS Line0b8 Line1b8 Line2b8 Line3b8 Line45b8 Line45b8 Line6b8 Line7b8 S0 S1 S2 Out8) TeamXOR8to1MUX
8to1MUXb7 (VDD VSS Line0b7 Line1b7 Line2b7 Line3b7 Line45b7 Line45b7 Line6b7 Line7b7 S0 S1 S2 Out7) TeamXOR8to1MUX
8to1MUXb6 (VDD VSS Line0b6 Line1b6 Line2b6 Line3b6 Line45b6 Line45b6 Line6b6 Line7b6 S0 S1 S2 Out6) TeamXOR8to1MUX
8to1MUXb5 (VDD VSS Line0b5 Line1b5 Line2b5 Line3b5 Line45b5 Line45b5 Line6b5 Line7b5 S0 S1 S2 Out5) TeamXOR8to1MUX
8to1MUXb4 (VDD VSS Line0b4 Line1b4 Line2b4 Line3b4 Line45b4 Line45b4 Line6b4 Line7b4 S0 S1 S2 Out4) TeamXOR8to1MUX
8to1MUXb3 (VDD VSS Line0b3 Line1b3 Line2b3 Line3b3 Line45b3 Line45b3 Line6b3 Line7b3 S0 S1 S2 Out3) TeamXOR8to1MUX
8to1MUXb2 (VDD VSS Line0b2 Line1b2 Line2b2 Line3b2 Line45b2 Line45b2 Line6b2 Line7b2 S0 S1 S2 Out2) TeamXOR8to1MUX
8to1MUXb1 (VDD VSS Line0b1 Line1b1 Line2b1 Line3b1 Line45b1 Line45b1 Line6b1 Line7b1 S0 S1 S2 Out1) TeamXOR8to1MUX
8to1MUXb0 (VDD VSS Line0b0 Line1b0 Line2b0 Line3b0 Line45b0 Line45b0 Line6b0 Line7b0 S0 S1 S2 Out0) TeamXOR8to1MUX


